package com.itheima.d8_thread_pool;

import java.util.List;
import java.util.concurrent.ArrayBlockingQueue;
import java.util.concurrent.Executors;
import java.util.concurrent.ThreadPoolExecutor;
import java.util.concurrent.TimeUnit;

/*
    目标：掌握线程池的创建。
    需求 : 使用线程池处理Runnable类型任务
 */
public class ThreadPoolTest2 {
    public static void main(String[] args) {
        ThreadPoolExecutor threadPoolExecutor = new ThreadPoolExecutor(
                3,
                5,
                60,
                TimeUnit.SECONDS,
                new ArrayBlockingQueue<>(10),
                Executors.defaultThreadFactory(),
                new ThreadPoolExecutor.CallerRunsPolicy()
        );
        for (int i = 0; i < 16; i++) {
//            threadPoolExecutor.submit(new Student("小明" + i));
            threadPoolExecutor.execute(new Student("小白" + i));
        }
//        threadPoolExecutor.shutdown();
        /*List<Runnable> runnables = threadPoolExecutor.shutdownNow();
        System.out.println(runnables.size());
        System.out.println(runnables);*/
    }
}

class Student implements Runnable {
    private String name;

    public Student(String name) {
        this.name = name;
    }

    public Student() {
    }

    @Override
    public void run() {
        System.out.println(Thread.currentThread().getName() + "教" + name + "游泳");
    }
}
